接口说明
短音播放开放能力分为音频资源、tone音和系统音三部分,均定义在SoundPlayer类。
接口名 |
描述 |
---|---|
SoundPlayer(int taskType) |
构造函数,仅用于音频资源。 |
createSound(String path) |
从指定的路径加载音频数据生成短音资源。 |
createSound(Context context, int resourceId) |
根据应用程序上下文合音频资源ID加载音频数据生成短音资源。 |
createSound(AssetFD assetFD) |
从指定的AssetFD实例加载音频数据生成短音资源。 |
createSound(java.io.FileDescriptor fd, long offset, long length) |
根据文件描述符从文件加载音频数据生成音频资源。 |
createSound(java.lang.String path, AudioRendererInfo rendererInfo) |
根据从指定路径和播放信息加载音频数据生成短音资源。 |
setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener) |
设置声音创建完成的回调。 |
setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener, boolean isDiscarded) |
设置用于声音创建完成的回调,并根据指定的isDiscarded标志位确定是否丢弃队列中的原始回调通知消息。 |
deleteSound(int soundID) |
删除短音同时释放短音所占资源。 |
pause(int taskID) |
根据播放任务ID暂停对应的短音播放。 |
play(int soundID) |
使用默认参数播放短音。 |
play(int soundID, SoundPlayerParameters parameters) |
使用指定参数播放短音。 |
resume(int taskID) |
恢复短音播放任务。 |
setLoop(int taskID, int loopNum) |
设置短音播放任务的循环次数。 |
setPlaySpeedRate(int taskID, float speedRate) |
设置短音播放任务的播放速度。 |
setPriority(int taskID, int priority) |
设置短音播放任务的优先级。 |
setVolume(int taskID, AudioVolumes audioVolumes) |
设置短音播放任务的播放音量。 |
setVolume(int taskID, float volume) |
设置短音播放任务的所有音频声道的播放音量。 |
stop(int taskID) |
停止短音播放任务。 |
pauseAll() |
暂停所有正在播放的任务。 |
resumeAll() |
恢复虽有已暂停的播放任务。 |
接口名 |
描述 |
---|---|
SoundPlayer() |
构造函数,仅用于tone音。 |
createSound(ToneDescriptor.ToneType type, int durationMs) |
创建具有音调频率描述和持续时间(毫秒)的tone音。 |
createSound(AudioStreamInfo.StreamType streamType, float volume) |
根据音量和音频流类型创建tone音。 |
play(ToneDescriptor.ToneType toneType, int durationMs) |
播放指定时长和tone音类型的tone音。 |
pause() |
暂停tone音播放。 |
play() |
播放创建好的tone音。 |
release() |
释放tone音资源。 |
接口名 |
描述 |
---|---|
SoundPlayer(String packageName) |
构造函数,仅用于系统音。 |
playSound(SoundType type) |
播放系统音。 |
playSound(SoundType type, float volume) |
指定音量播放系统音。 |
音频资源的加载与播放
- 通过SoundPlayer(int)构造方法获取SoundPlayer类的实例化对象,其中入参taskType的取值范围和含义参考枚举类AudioManager.AudioStreamType的定义。
- 调用createSound(String)方法从指定路径加载音频资源,并生成短音ID,后续可使用通过短音ID进行短音资源的播放和删除等操作。
- 使用默认播放参数的play(int)方法进行播放,并通过播放成功后返回任务ID进行音量、循环次数、播放速度和优先级等参数的设置。
- 短音资源使用完毕需要调用deleteSound(int)完成对资源的释放。
下面的样例展示音频资源的加载与播放:
public void demo() {
// 步骤1:实例化对象
SoundPlayer soundPlayer = new SoundPlayer(AudioManager.AudioVolumeType.STREAM_MUSIC.getValue());
// 步骤2:指定音频资源加载并创建短音
int soundId = soundPlayer.createSound(“/system/xxx”);
soundPlayer.setOnCreateCompleteListener((soundPlayer1, cacheId, status) -> {
// 步骤3:短音播放,设置音量、循环次数和播放速度
if (status == 0) {
int taskId = soundPlayer.play(cacheId);
soundPlayer.setVolume(taskId, 1.0f);
soundPlayer.setLoop(taskId, -1); // “-1”表示一直循环播放
soundPlayer.setPlaySpeedRate(taskId, 1.0f);
}
});
// 步骤4:释放短音资源
soundPlayer.deleteSound(soundId);
}
tone音的生成与播放
- 通过SoundPlayer()构造方法获取SoundPlayer类的实例化对象。
- 使用SoundPlayer的实例化对象,通过createSound(ToneDescriptor.ToneType, int)方法,指定tone音类型和tone音播放时长来创建tone音资源。
- 使用SoundPlayer的实例化对象,通过play、pause、release方法完成tone音播放、暂停和资源释放。
下面的样例展示tone音的生成与播放:
public void demo() {
// 步骤1:实例化对象
SoundPlayer soundPlayer = new SoundPlayer();
// 步骤2:创建DTMF_0(高频1336Hz,低频941Hz)持续时间1000ms的tone音
soundPlayer.createSound(ToneDescriptor.ToneType.DTMF_0, 1000);
// 步骤3:tone音播放、暂停和资源释放
soundPlayer.play();
soundPlayer.pause();
soundPlayer.release();
}
系统音的播放
- 通过SoundPlayer(String)构造方法获取SoundPlayer类的实例化对象。
- 使用SoundPlayer的实例化对象,通过playSound(SoundType)或playSound(SoundType, float)方法指定系统音类型和音量,并进行系统音播放。
下面的样例展示系统音的播放:
public void demo() {
// 步骤1:实例化对象
SoundPlayer soundPlayer = new SoundPlayer(“packageName”);
// 步骤2:播放键盘敲击音,音量为1.0
soundPlayer.playSound(SoundPlayer.SoundType.KEY_CLICK, 1.0f);
}